/**
  ******************************************************************************
  * @file    main.c
  * @author  ashuai0110
  * @version V1.0
  * @date    2024-01-28
  * @brief   使用举例-内存管理
  *
  ******************************************************************************
  * @attention
  *
  * 版权声明:内容为编者(ashuai0110)原创,使用请注明出处,当然,你也可以不这样做^_^
  * 出处链接:https://gitee.com/ashuai0110/mcu_reuse_development_module
  *
  ******************************************************************************
  */

/* 包含头文件-----------------------------------------------------------------*/
#include "stm32f10x.h"

#include "memory.h"

/* 私有宏定义-----------------------------------------------------------------*/

/* 私有类型定义---------------------------------------------------------------*/
/* 测试结构体 */
typedef struct {
    int a;
    short b;
    char c;
    char d;
} test_str_t;

/* 私有变量-------------------------------------------------------------------*/

/* 全局变量-------------------------------------------------------------------*/

/* 私有函数原型---------------------------------------------------------------*/


/**
  * @brief  main
  */
int main(int argc, char *argv[])
{
    VERSION_LOG("example-memory", 1, 0, 0);
    
    /* 内存管理初始化 */
    mem_init();
    DEBUG_LOG("used/total: %d/%d", mem_get_used_size(), mem_get_total_size());
    /* 申请1byte内存 管理者12byte + 4byte(4字节对齐) = 16byte */
    char *p = (char *)mem_alloc(sizeof(char));
    DEBUG_LOG("used/total: %d/%d", mem_get_used_size(), mem_get_total_size());
    /* 申请8byte内存 管理者12byte + 8byte = 20byte */
    test_str_t *pStr = mem_alloc(sizeof(test_str_t));
    DEBUG_LOG("used/total: %d/%d", mem_get_used_size(), mem_get_total_size());
    /* 释放8byte内存 */
    mem_free(pStr);
    DEBUG_LOG("used/total: %d/%d", mem_get_used_size(), mem_get_total_size());
    /* 释放1byte内存 */
    mem_free(p);
    DEBUG_LOG("used/total: %d/%d", mem_get_used_size(), mem_get_total_size());
    
    while(1)
    {

    }
}

